import {createSlice} from '@reduxjs/toolkit';

//『帮助创建 reducer 以及 action creator』
let countSlice = createSlice({
  //别名    区分其他状态
  name: 'count', 
  //初始值 『一定要使用对象. 尽量不要使用基本数据类型值』
  initialState: {value: 10},
  //设置 reducer. 将之前的 reducer 进行了切片处理
  reducers: {
    //增加的操作   dispatch(incre(10));
    incre: (state, action) => {
      //直接对 state 进行更新
      state.value += action.payload;
    },
    //减少的操作
    decre: (state, action) => {
      state.value -= action.payload
    }
  }
});

//获得 count 对应的 reducer 函数
let countReducer = countSlice.reducer;

//获得 action creator  『创建 action 的函数』
export let {incre, decre} = countSlice.actions; // incre 和 decre 在执行时会返回 action 对象

//异步更新 redux 中的状态
export function asyncIncreAction(payload){
  return dispatch => {
    setTimeout(() => {
      dispatch(incre(payload));
    }, 1000)
  }
}

//暴露 reducer
export default countReducer;